package util;


public class Html2Text {
    public static String StripHT(String strHtml, int len) {

        String txtcontent = strHtml.replaceAll("</?[^>]+>", "").replaceAll("&nbsp;", "");//剔出<html>的标签
        txtcontent = txtcontent.replaceAll("<a>\\s*|\t|\r|\n</a>", "");//去除字符串中的空格,回车,换行符,制表符
        if (txtcontent.length() > len)
            return txtcontent.substring(0, len) + "...";
        else
            return txtcontent;


    }

    public static void main(String[] args) {
        System.out.println(StripHT("<p>&nbsp; &nbsp;&nbsp;<b><span lang=\"en\">Java</span></b>是一种广泛使用的计算机<a href=\"https://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E8%AA%9E%E8%A8%80\" title=\"编程语言\">编程语言</a>，拥有<a href=\"https://zh.wikipedia.org/wiki/%E8%B7%A8%E5%B9%B3%E5%8F%B0\" title=\"跨平台\">跨平台</a>、<a href=\"https://zh.wikipedia.org/wiki/%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91\" title=\"面向对象\">面向对象</a>、<a href=\"https://zh.wikipedia.org/wiki/%E6%B3%9B%E5%9E%8B%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88\" title=\"泛型编程\">泛型编程</a>的特性，广泛应用于企业级Web应用开发和移动应用开发。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;任职于<a href=\"https://zh.wikipedia.org/wiki/%E6%98%87%E9%99%BD%E9%9B%BB%E8%85%A6\" title=\"太阳微系统\">太阳微系统</a>的<a href=\"https://zh.wikipedia.org/wiki/%E8%A9%B9%E5%A7%86%E6%96%AF%C2%B7%E9%AB%98%E6%96%AF%E6%9E%97\" title=\"詹姆斯·高斯林\">詹姆斯·高斯林</a>等人于1990年代初开发Java语言的雏形，最初被命名为Oak，目标设置在<a href=\"https://zh.wikipedia.org/wiki/%E5%AE%B6%E7%94%A8%E7%94%B5%E5%99%A8\" title=\"家用电器\">家用电器</a>等小型系统的<a href=\"https://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80\" title=\"编程语言\">编程语言</a>，应用在<a href=\"https://zh.wikipedia.org/wiki/%E7%94%B5%E8%A7%86%E6%9C%BA\" title=\"电视机\">电视机</a>、<a href=\"https://zh.wikipedia.org/wiki/%E7%94%B5%E8%AF%9D\" title=\"电话\">电话</a>、<a href=\"https://zh.wikipedia.org/wiki/%E9%97%B9%E9%92%9F\" title=\"闹钟\">闹钟</a>、<a href=\"https://zh.wikipedia.org/wiki/%E7%83%A4%E9%9D%A2%E5%8C%85%E6%9C%BA\" title=\"烤面包机\">烤面包机</a>等家用电器的控制和通信。由于这些<a href=\"https://zh.wikipedia.org/w/index.php?title=%E6%99%BA%E8%83%BD%E5%8C%96&amp;action=edit&amp;redlink=1\" title=\"智能化（页面不存在）\">智能化</a>家电的市场需求没有预期的高，Sun公司放弃了该项计划。随着1990年代<a href=\"https://zh.wikipedia.org/wiki/%E7%B6%B2%E9%9A%9B%E7%B6%B2%E8%B7%AF\" title=\"互联网\">互联网</a>的发展，Sun公司看见Oak在<a href=\"https://zh.wikipedia.org/wiki/%E7%B6%B2%E9%9A%9B%E7%B6%B2%E8%B7%AF\" title=\"互联网\">互联网</a>上应用的前景，于是改造了Oak，于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展，逐渐成为重要的网络编程语言。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;Java编程语言的风格十分接近<a href=\"https://zh.wikipedia.org/wiki/C%2B%2B\" title=\"C++\">C++</a>语言。继承了C++语言面向对象技术的核心，舍弃了容易引起错误的<a href=\"https://zh.wikipedia.org/wiki/%E6%8C%87%E9%92%88_(%E4%BF%A1%E6%81%AF%E5%AD%A6)\" title=\"指针 (信息学)\">指针</a>，以<a href=\"https://zh.wikipedia.org/wiki/%E5%8F%83%E7%85%A7\" title=\"引用\">引用</a>取代；移除了C++中的<a href=\"https://zh.wikipedia.org/wiki/%E8%BF%90%E7%AE%97%E7%AC%A6%E9%87%8D%E8%BD%BD\" title=\"运算符重载\">运算符重载</a>和<a href=\"https://zh.wikipedia.org/wiki/%E7%BB%A7%E6%89%BF_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)\" title=\"继承 (计算机科学)\">多重继承</a>特性，用<a href=\"https://zh.wikipedia.org/wiki/%E6%8E%A5%E5%8F%A3_(Java)\" title=\"接口 (Java)\">接口</a>取代；增加<a href=\"https://zh.wikipedia.org/wiki/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8)\" title=\"垃圾回收 (计算机科学)\">垃圾回收器</a>功能。在Java SE 1.5版本中引入了<a href=\"https://zh.wikipedia.org/wiki/%E6%B3%9B%E5%9E%8B\" title=\"泛型\">泛型编程</a>、<a href=\"https://zh.wikipedia.org/wiki/%E7%B1%BB%E5%9E%8B%E5%AE%89%E5%85%A8\" title=\"类型安全\">类型安全</a>的枚举、不定长参数和自动装/拆箱特性。太阳微系统对Java语言的解释是：“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言”</p><p>&nbsp;&nbsp;&nbsp;&nbsp;Java不同于一般的<a href=\"https://zh.wikipedia.org/wiki/%E7%B7%A8%E8%AD%AF%E8%AA%9E%E8%A8%80\" title=\"编译语言\">编译语言</a>或<a href=\"https://zh.wikipedia.org/wiki/%E7%9B%B4%E8%AD%AF%E8%AA%9E%E8%A8%80\" title=\"解释型语言\">解释型语言</a>。它首先将源代码编译成<a href=\"https://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E7%A0%81\" title=\"字节码\">字节码</a>，再依赖各种不同平台上的虚拟机来解释执行字节码，从而具有“<a href=\"https://zh.wikipedia.org/wiki/%E4%B8%80%E6%AC%A1%E7%BC%96%E5%86%99%EF%BC%8C%E5%88%B0%E5%A4%84%E8%BF%90%E8%A1%8C\" title=\"一次编写，到处运行\">一次编写，到处运行</a>”的跨平台特性。在早期JVM中，这在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后，Java的运行速度有了大幅提升。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;与传统类型不同，Sun公司在推出Java时就将其作为开放的技术。全球的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一，并获得了广大软件开发商的认同。这与<a href=\"https://zh.wikipedia.org/wiki/%E5%BE%AE%E8%BD%AF\" title=\"微软\">微软</a>公司所倡导的注重精英和封闭式的模式完全不同，此外，<a href=\"https://zh.wikipedia.org/wiki/%E5%BE%AE%E8%BD%AF%E5%85%AC%E5%8F%B8\" title=\"微软公司\">微软公司</a>后来推出了与之竞争的<a href=\"https://zh.wikipedia.org/wiki/.NET_Framework\" title=\".NET Framework\">.NET平台</a>以及模仿Java的<a href=\"https://zh.wikipedia.org/wiki/C%EF%BC%83\" title=\"C＃\">C#</a>语言。后来Sun公司被<a href=\"https://zh.wikipedia.org/wiki/%E7%94%B2%E9%AA%A8%E6%96%87%E5%85%AC%E5%8F%B8\" title=\"甲骨文公司\">甲骨文公司</a>并购，Java也随之成为甲骨文公司的产品。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;现时，移动<a href=\"https://zh.wikipedia.org/wiki/%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1\" title=\"操作系统\">操作系统</a><a href=\"https://zh.wikipedia.org/wiki/Android\" title=\"Android\">Android</a>大部分的代码采用Java<a href=\"https://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E8%AA%9E%E8%A8%80\" title=\"编程语言\">编程语言</a>编程。</p><pre><code>import java.util.UUID;<br><br>public class GenerateCode {<br>    public static String generate() {<br>        String code;<br>        UUID uuid = UUID.randomUUID();<br>        code = uuid.toString().substring(0, 6).toUpperCase();<br>        return code;<br>    }<br><br>    public static void main(String[] args) {<br>        for (int i = 0; i &lt; 10; i++)<br>            System.out.println(GenerateCode.generate());<br>    }<br>}</code></pre><p><br></p>", 30));

    }

}
